<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #app{
            width:500px;
            height: 500px;
            background-color: pink;

        }
        .fu{
            width: 400px;
            height: 400px;
            background-color: skyblue;
        }   
        .son{
            width: 200px;
            height: 200px;
            background-color: red;
        }
    </style>
</head>
<body>
    <div id="app">
        <comm-div></comm-div>
        <comm-div></comm-div>
        <button></button>
    </div>
    
</body>
<script src="./vue.js"></script>
<script>
    const ConmSon={
        template:`
            <div class='son'>
                <div>
                    我是自定义组件-子组件
                    <button @click="msg=1">点击需改msg的值</button>
                </div>  
                {{msg}} 
                <br>
                {{a}}
                <br>
                {{b}}
                <br>
                {{c}}
                <button @click='emit'>点击需改C的值</button>
            </div>
        `,
        data(){
            return{
                msg:'son'
            }
        },
        props:{
            // 规定数据类型
            a:{
                type:Number
            },
            // 可以实多各类型
            b:{
                type:[Number,String]
            },
            c:{
                type:Array,
                default:()=>[1,2,3,4]
            }

        },
        methods:{
            emit(){
                console.log('我是子组件的事件');
                this.$emit('biubiu','200')
            }
        }
       
    }

    // 自定义父组件
    const CommDiv={
        template:`
            <div class='fu'>
                <div>
                    我是自定义组件-父组件
                    <button @click="msg=1">点击需改msg的值</button>
                </div>  
                {{msg}}  
                <hr>
                <conm-son :a='10' :b='b' @biubiu='fn'></conm-son>
            </div>
        `,
        data(){
            return{
                msg:'fatahe',
                b:30
            }
        },
        
        components:{
            ConmSon
        },
        methods:{
            fn(msg){
                console.log('我是父组件的事件')
                this.b=100
                console.log(msg);
            }
        }
    }
    Vue.component('CommDiv',CommDiv)
    const vm=new Vue({
        el:'#app'
    })
</script>
</html>